package com.onec.service.trade.service;

import com.onec.service.api.dto.request.gateway.BizContent;
import com.onec.service.api.dto.response.customer.AgentInfoResp;
import com.onec.service.api.dto.response.customer.MerchantResp;
import com.onec.service.api.dto.response.route.RouteResp;
import com.onec.service.api.enums.StatusEnum;
import com.onec.service.trade.entity.OnlineOrder;

/**
 * 交易订单服务处理
 *
 * @author onec
 */
public interface OnlineOrderService {

    /**
     * 创建订单信息
     *
     * @param merchantResp
     * @param routeResp
     * @param agentInfoResp
     * @param bizContent
     * @return
     */
    OnlineOrder createOrder(MerchantResp merchantResp, RouteResp routeResp,
                            AgentInfoResp agentInfoResp, BizContent bizContent);

    /**
     * 系统流水号获取订单
     *
     * @param serialNum
     * @return
     */
    OnlineOrder findBySerialNum(String serialNum);

    OnlineOrder getAvailableBySerialNum(String serialNum);


    OnlineOrder findByTradeNum(String tradeNum);

    /**
     * 交易订单号获取订单信息！
     *
     * @param tradeNum
     * @return
     */
    OnlineOrder getAvailableByTradeNum(String tradeNum);

    /**
     * 交易订单号获取订单信息！
     *
     * @param tradeNum
     * @return
     */
    OnlineOrder updateByTradeNum(String tradeNum, StatusEnum statusEnum, String message);
}
